package com.py.credit.service.excel.read.service;

import com.py.credit.entity.BatchLog;
import com.py.credit.entity.Column;
import com.py.credit.entity.Table;
import org.apache.poi.ss.usermodel.Sheet;

import java.util.List;
import java.util.Map;

/**
 * 数据校验服务类
 *
 * @author Min DongXv
 * @date 19/4/3 10:56
 */
public interface InspectDataStyleService {

    /**
     * 功能描述: 重复性校验
     *
     * @param listDataMap 待校验数据
     * @param table       资源信息
     * @param columns     字段信息
     * @param useMemory   是否启用内存表
     * @param checkRepeat 是否开启
     * @return 校验后数据集
     * @author Min DongXv
     * @date 19/4/3 10:56
     */
    Map<String, Object> duplicationCheck(List<Map<String, Object>> listDataMap, Table table, List<Column> columns,
                                         boolean useMemory, boolean checkRepeat);
    /**
     * 功能描述: 重复性校验
     *
     * @param listDataMap 待校验数据
     * @param table       资源信息
     * @param columns     字段信息
     * @param useMemory   是否启用内存表
     * @param checkRepeat 是否开启
     * @return 校验后数据集
     * @author Min DongXv
     * @date 19/4/3 10:56
     */
    Map<String, Object> duplicationCheck_new(List<Map<String, Object>> listDataMap, Table table, List<Column> columns,
                                         boolean useMemory, boolean checkRepeat, Sheet st1);

    /**
     * 功能描述: 表规则校验与字段规则校验
     *
     * @param batchLog    批次信息
     * @param listDataMap 待校验数据
     * @param table       资源信息
     * @param columns     待校验字段信息
     * @return 校验结果Map
     * @author Min DongXv
     * @date 19/3/29 16:23
     */
    Map<String, Object> styleCheck(BatchLog batchLog, List<Map<String, Object>> listDataMap, Table table,
                                   List<Column> columns, List<Map<String, Object>> listDataMap2);
    /**
     * 功能描述: 表规则校验与字段规则校验
     *
     * @param batchLog    批次信息
     * @param listDataMap 待校验数据
     * @param table       资源信息
     * @param columns     待校验字段信息
     * @return 校验结果Map
     * @author Min DongXv
     * @date 19/3/29 16:23
     */
    Map<String, Object> styleCheck_new(BatchLog batchLog, List<Map<String, Object>> listDataMap, Table table,
                                   List<Column> columns, List<Map<String, Object>> listDataMap2,Sheet st1);

    /**
     * 功能描述: 异常数据修改后再次校验
     *
     * @param tableId 资源ID
     * @param map     待校验数据
     * @param columns 待校验字段
     * @return 校验结果
     * @author Min DongXv
     * @date 18/7/18 11:35
     */
    String dataCheck(int tableId, Map<String, Object> map, List<Column> columns);

    /**
     * 功能描述: 数据库规则校验
     *
     * @param batchLog    批次信息
     * @param listDataMap 待校验数据
     * @param table       表信息
     * @param columns     列信息
     * @return 校验结果
     * @author Min DongXv
     * @date 19/4/3 10:58
     */
    Map<String, Object> dataFormatCheck(BatchLog batchLog, List<Map<String, Object>> listDataMap, Table table,
                                        List<Column> columns, List<Map<String, Object>> listDataMap2);
    /**
     * 功能描述: 数据库规则校验
     *
     * @param batchLog    批次信息
     * @param listDataMap 待校验数据
     * @param table       表信息
     * @param columns     列信息
     * @return 校验结果
     * @author Min DongXv
     * @date 19/4/3 10:58
     */
    Map<String, Object> dataFormatCheck_new(BatchLog batchLog, List<Map<String, Object>> listDataMap, Table table,
                                        List<Column> columns, List<Map<String, Object>> listDataMap2, Sheet st1);

}
